#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
 
int main(void)
{
	int ret = -1;
	// 1、使用socket()函数获取一个socket文件描述符
	int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
	if (-1 == sockfd)
	{
		printf("socket open err.");
		return -1;
	}
 
	// 2. 准备接收方的地址和端口，'192.168.0.107'表示目的ip地址，8266表示目的端口号 
    struct sockaddr_in sock_addr = {0};	
	sock_addr.sin_family = AF_INET;                         // 设置地址族为IPv4
	sock_addr.sin_port = htons(8266);						// 设置地址的端口号信息
	//sock_addr.sin_addr.s_addr = inet_addr("192.168.0.107");	//　设置IP地址
        sock_addr.sin_addr.s_addr = htonl(INADDR_ANY);
 
    // 3. 发送数据到指定的ip和端口
	//char sendbuf[]={"hello world, I am UDP."};
     //char sendbuf[]={"\x02"};
    //char sendbuf[]={"\x02\x00\x00\x00\x03\x00\x00\x00"};  //，相当于两个int型，占八个字节，字节顺序也是需要注意。
    //char sendbuf[]={"\x00\x00\x00\x00\x00\x00\xE0\x3F"};  //顺序需要倒着，这个需要注意，不知道是不是因为字节大小端的问题？。0.5的64double的16进制是3FE0000000000000
    char sendbuf[]={"\x00\x00\x00\x00\x00\x00\xE0\x3F\x00\x00\x00\x00\x00\x00\xF8\x3F"};  //1.5的64double的16进制是3FF8000000000000
    int cnt = 10;
    while(cnt--)
    {
        ret = sendto(sockfd, sendbuf, sizeof(sendbuf), 0, (struct sockaddr*)&sock_addr, sizeof(sock_addr));
	    printf("ret = %d \n",ret);
        sleep(1);
    }
 
    // 4. 关闭套接字
    close(sockfd);
}
 
